package com.todo.sight.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.sight.application.entity.bo.*;
import com.todo.sight.application.entity.condition.SightQueryConditionBO;

import java.util.List;

/**
 * (SightBase)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:48
 */
public interface SightService {

    /**
     * 新增景点详情信息
     *
     * @param sightDetailBO
     * @return
     */
    Boolean insertSightDetail(SightDetailBO sightDetailBO);

    /**
     * 更新景点详情信息
     *
     * @param sightDetailBO
     * @return
     */
    Boolean updateSightDetail(SightDetailBO sightDetailBO);

    /**
     * 根据景点Id删除景点详情信息
     *
     * @param id
     * @return
     */
    Boolean removeSightById(Long id);

    /**
     * 根据主键Id 展示/关闭景点信息
     *
     * @param id
     * @param show
     * @return
     */
    Boolean showSightById(Long id, Integer show);

    /**
     * 根据主键Id查询景点详情信息
     *
     * @param id
     * @return
     */
    SightDetailBO querySightDetailById(Long id);

    /**
     * 根据poiId查询景点详情信息
     *
     * @param poiId
     * @return
     */
    SightDetailBO querySightDetailByPoi(Long poiId);

    /**
     * 根据Id查询景点基础信息
     *
     * @param id
     * @return
     */
    SightBaseBO querySightBaseById(Long id);

    /**
     * 根据Id查询景点基础信息列表
     *
     * @param sightIdList
     * @return
     */
    List<SightBaseBO> querySightBaseById(List<Long> sightIdList);

    /**
     * 多条件查询景点列表信息
     *
     * @param sightQueryConditionBO
     * @return
     */
    PageResult<SightBaseBO> querySightBaseListByCondition(SightQueryConditionBO sightQueryConditionBO);

    /**
     * 根据poiIdList列表查询景点基础信息列表
     *
     * @param poiIdList
     * @return
     */
    List<SightBaseBO> querySightInfoByPoiIdList(List<Long> poiIdList);

    /**
     * 搜索景点信息
     *
     * @param searchSightPoiBO
     * @return
     */
    PageResult<SearchSightPoiDetailBO> searchSightPoi(SearchSightPoiBO searchSightPoiBO);

    /**
     * 搜索景点概要信息
     *
     * @param searchSightSummaryBO
     * @return
     */
    PageResult<SearchSightSummaryDetailBO> searchSightSummary(SearchSightSummaryBO searchSightSummaryBO);
}
